Submission #1367634


Source Code Expand

#include <bits/stdc++.h>

using namespace std;

#define FOR(i,a,b) for(int i=(a);i<(b);i++)
#define REP(i,n) FOR(i,0,n)
#define ALL(v) (v).begin(),(v).end()
#define fi first
#define se second

template<typename A, typename B> inline bool chmax(A &a, B b) { if (a<b) { a=b; return 1; } return 0; }
template<typename A, typename B> inline bool chmin(A &a, B b) { if (a>b) { a=b; return 1; } return 0; }

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef pair<int, pii> P;

const ll INF = 1ll<<30;
const ll MOD = 1000000007;
const double EPS  = 1e-10;

int N, L, T;
int X[112345], W[112345];
int ans[112345];

int calc(int idx) {
	int res = 0;
	REP(i, N) {
		if (i == idx) continue;
		
		int t = INF;
		
		if (W[idx] == 1 && W[i] == 2) {
			if (X[idx] < X[i]) t = (X[i] - X[idx] + 1) / 2;
			else t = (X[i] - X[idx] + L + 1) / 2;
		}
		if (W[idx] == 2 && W[i] == 1) {
			if (X[idx] < X[i]) t = (X[idx] - X[i] + L + 1) / 2;
			else t = (X[idx] - X[i] + 1) / 2;
		}
		
		if (t <= T) res++;
	}
	
	if (W[idx] == 1) return (idx + res) % N;
	else return (idx - res + N) % N;
}

int endP(int idx) {
	if (W[idx] == 1) return ((ll)X[idx] + T) % L;
	else return ((ll)X[idx] - T + L) % L;
}

int main() {
	cin >> N >> L >> T;
	REP(i, N) scanf("%d %d", X + i, W + i);
	
	T %= L;
	
	vector<int> e(N); // T秒後の各位置
	REP(i, N) e[i] = endP(i);
	sort(ALL(e));
	
	/*
	cerr << "endpos : ";
	REP(i, N) cerr << e[i] << " ";
	cerr << endl;
	*/
	
	if (N == 1) {
		cout << e[0] << endl;
		return 0;
	}
	
	int idx1 = calc(0), p1 = endP(0);
	int idx2 = calc(1), p2 = endP(1);
	
	/*
	cout << idx1 << " " << p1 << endl;
	cout << idx2 << " " << p2 << endl;
	*/
	
	int st = 0;
	REP(i, N) {
		if (e[i] == p1 && e[(idx2 - idx1 + i + N) % N] == p2) {
			st = i;
			break;
		}
	}
	
	REP(i, N) ans[(idx1 + i) % N] = e[(i + st) % N];
	REP(i, N) printf("%d\n", ans[i]);
	
	return 0;
}

Submission Info

Submission Time
Task C - Ants on a Circle
User tkmst201
Language C++14 (GCC 5.4.1)
Score 0
Code Size 1985 Byte
Status WA
Exec Time 35 ms
Memory 2816 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:57:40: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  REP(i, N) scanf("%d %d", X + i, W + i);
                                        ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 700
Status
AC × 2
AC × 10
WA × 10
Set Name Test Cases
Sample sample_01.txt, sample_02.txt
All sample_01.txt, sample_02.txt, sample_01.txt, sample_02.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 256 KB
sample_02.txt AC 1 ms 256 KB
subtask_1_01.txt WA 21 ms 1792 KB
subtask_1_02.txt WA 17 ms 1408 KB
subtask_1_03.txt WA 34 ms 2816 KB
subtask_1_04.txt WA 35 ms 2816 KB
subtask_1_05.txt WA 6 ms 640 KB
subtask_1_06.txt WA 8 ms 768 KB
subtask_1_07.txt WA 31 ms 2432 KB
subtask_1_08.txt WA 32 ms 2432 KB
subtask_1_09.txt WA 21 ms 1664 KB
subtask_1_10.txt WA 18 ms 1408 KB
subtask_1_11.txt AC 6 ms 640 KB
subtask_1_12.txt AC 28 ms 2432 KB
subtask_1_13.txt AC 21 ms 1920 KB
subtask_1_14.txt AC 19 ms 1792 KB
subtask_1_15.txt AC 1 ms 256 KB
subtask_1_16.txt AC 1 ms 256 KB