답안 #28135

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
28135 2017-07-15T12:05:06 Z aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(#1199, suhgyuho_william) 개미와 비트코인 (FXCUP2_ant) C++14
1 / 1
56 ms 5928 KB
#include <bits/stdc++.h>
#include <unistd.h>

#define pii pair<int,int>
#define pll pair<lld,lld>
#define pb push_back
#define lld long long

using namespace std;

lld N,where; lld L,T;
struct data{
	lld x;
	lld num;
	char s[3];
}a[100002];
lld memo[100002],tmp[100002];

lld change(lld value,char op){
	lld i=0; a[i].x = value;
	if(op == 'L'){
		if(T <= a[i].x) a[i].x -= T;
		else if(T <= a[i].x+L) a[i].x = T-a[i].x;
		else a[i].x = a[i].x+L*2-T;
	}else{
		if(T <= L-a[i].x) a[i].x += T;
		else if(T <= L*2-a[i].x) a[i].x = -a[i].x + L*2 - T;
		else a[i].x = T-(L*2-a[i].x);
	}
	return a[i].x;
}

int main(){
	scanf("%lld %lld %lld",&N,&L,&T);
	T %= (L*2);
	for(lld i=1; i<=N; i++){
		scanf("%lld %s",&a[i].x,&a[i].s);
		a[i].num = i;
	}
	sort(a+1,a+N+1,[&](data &x,data &y){
		return x.x < y.x;
	});
	scanf("%lld",&where);
	for(lld i=1; i<=N; i++){
		if(a[i].num == where){
			where = i;
			break;
		}
	}
	for(lld i=1; i<=N; i++){
		memo[i] = a[i].num; a[i].num = i;
		a[i].x = change(a[i].x,a[i].s[0]);
		//printf("%lld %lld\n",a[i].x,memo[i]);
	}
	sort(a+1,a+N+1,[&](data &x,data &y){
		return x.x < y.x;
	});
	for(lld i=1; i<=N; i++){
		if(a[i].num == where){
			where = i;
			break;
		}
	}
	//printf("%lld\n",where);
	for(lld i=1; i<=N; i++) tmp[memo[i]] = i;
	where = memo[where];
	printf("%lld\n",where);

	return 0;
}	

Compilation message

ant.cpp: In function 'int main()':
ant.cpp:37:34: warning: format '%s' expects argument of type 'char*', but argument 3 has type 'char (*)[3]' [-Wformat=]
   scanf("%lld %s",&a[i].x,&a[i].s);
                                  ^
ant.cpp:34:34: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld %lld %lld",&N,&L,&T);
                                  ^
ant.cpp:37:35: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%lld %s",&a[i].x,&a[i].s);
                                   ^
ant.cpp:43:22: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld",&where);
                      ^
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 5928 KB Output is correct
2 Correct 0 ms 5928 KB Output is correct
3 Correct 0 ms 5928 KB Output is correct
4 Correct 0 ms 5928 KB Output is correct
5 Correct 0 ms 5928 KB Output is correct
6 Correct 0 ms 5928 KB Output is correct
7 Correct 0 ms 5928 KB Output is correct
8 Correct 0 ms 5928 KB Output is correct
9 Correct 0 ms 5928 KB Output is correct
10 Correct 0 ms 5928 KB Output is correct
11 Correct 0 ms 5928 KB Output is correct
12 Correct 0 ms 5928 KB Output is correct
13 Correct 39 ms 5928 KB Output is correct
14 Correct 46 ms 5928 KB Output is correct
15 Correct 23 ms 5928 KB Output is correct
16 Correct 46 ms 5928 KB Output is correct
17 Correct 39 ms 5928 KB Output is correct
18 Correct 39 ms 5928 KB Output is correct
19 Correct 39 ms 5928 KB Output is correct
20 Correct 56 ms 5928 KB Output is correct