Submission #1768037
Source Code Expand
/*
exit
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <math.h>
#define BIG 2000000007
#define MOD 1000000007
typedef unsigned long long ull;
typedef signed long long sll;
#define N_MAX 2000
#define M_MAX 100000
typedef struct {
int a;
int b;
} hw;
typedef struct {
sll a;
sll b;
} hwll;
const hw vector8[8] = {
{-1, -1},
{-1, 0},
{-1, +1},
{ 0, -1},
{ 0, +1},
{+1, -1},
{+1, 0},
{+1, +1}
};
ull n, m;
ull h, w;
ull k;
sll va, vb, vc, vd, ve, vf;
ull a[N_MAX];
// sll a[N_MAX];
// ull b[N_MAX];
// sll b[M_MAX];
// ull dp[N_MAX];
ull dp[N_MAX + 1][N_MAX + 1];
// ull dp[N_MAX][M_MAX + 1];
// char s[N_MAX + 1];
// char t[N_MAX + 1];
// char s[N_MAX][M_MAX + 1];
// hw arr[N_MAX];
// hwll arr[N_MAX];
// hw brr[M_MAX];
// ull digitdp[102][ 2][ 2];
// pos less carry
void swap_adj(ull *a, ull *b){
ull tmp = *b;
*b = *a;
*a = tmp;
return;
}
ull divide(ull a, ull b){
ull x = MOD - 2;
ull ans = 1;
while (x) {
if (x & 1) ans = (ans * b) % MOD;
b = (b * b) % MOD;
x /= 2;
}
return (a * ans) % MOD;
}
int digits(ull x){
int i = 1;
while (x >= 10) {
x /= 10;
i++;
}
return i;
}
ull min(ull x, ull y){
return (x < y) ? x : y;
}
ull max(ull x, ull y){
return (x > y) ? x : y;
}
ull gcd(ull x, ull y){
if (x < y) {
return gcd(y, x);
} else if (y == 0) {
return x;
} else {
return gcd(y, x % y);
}
}
ull bitpow(ull a, ull x){
ull result = 1;
while (x) {
if (x & 1) {
result *= a;
result %= MOD;
}
x /= 2;
a = (a * a) % MOD;
}
return result;
}
// int nextroute(int arr[]){
// int i = n - 1;
// int j, x;
// while (arr[i - 1] > arr[i]) i--;
// x = n;
// for (j = i; j < n; j++) {
// if (arr[j] < arr[i - 1]) continue;
// if (x == n || arr[x] > arr[j]) x = j;
// }
// arr[i - 1] ^= arr[x];
// arr[x] ^= arr[i - 1];
// arr[i - 1] ^= arr[x];
// qsort(&arr[i], n - i, sizeof(int), comp);
// return 0;
// }
int nibutan_target(ull target){
ull maxdist = (target * (target + 1) / 2); // 時刻targetまでに到着できる距離は[-maxdist, maxdist]
return (n <= maxdist);
}
int targetdig(ull x, int index /* 1-indexed */){
// static...?
int posmax = digits(x);
if (posmax < index) return -1;
while (posmax > index) {
posmax--;
x /= 10;
}
return x % 10;
}
int intcomp(const void *left, const void *right){
if ((*(int*)left) < (*(int*)right)) {
return -1;
} else if ((*(int*)left) > (*(int*)right)) {
return +1;
} else {
return 0;
}
}
int ullcomp(const void *left, const void *right){
if ((*(ull*)left) < (*(ull*)right)) {
return -1;
} else if ((*(ull*)left) > (*(ull*)right)) {
return +1;
} else {
return 0;
}
}
int sllcomp(const void *left, const void *right){
if ((*(sll*)left) < (*(sll*)right)) {
return -1;
} else if ((*(sll*)left) > (*(sll*)right)) {
return +1;
} else {
return 0;
}
}
int hwAcomp(const void *left, const void *right){
return intcomp(&(((hw*)left)->a), &(((hw*)right)->a));
}
int hwBcomp(const void *left, const void *right){
return intcomp(&(((hw*)left)->b), &(((hw*)right)->b));
}
int hwABcomp(const void *left, const void *right){
int x = hwAcomp(left, right);
if (x) return x;
return hwBcomp(left, right);
}
int hwllAcomp(const void *left, const void *right){
return sllcomp(&(((hw*)left)->a), &(((hw*)right)->a));
}
int hwllBcomp(const void *left, const void *right){
return sllcomp(&(((hw*)left)->b), &(((hw*)right)->b));
}
int hwllABcomp(const void *left, const void *right){
int x = hwllAcomp(left, right);
if (x) return x;
return hwllBcomp(left, right);
}
int bitlet(char c){
return (1 << (c - 'a'));
}
ull seg[262144];
ull baseIndex;
int initSeg(ull a[], int num) {
int i;
baseIndex = 1;
while (baseIndex < num) baseIndex *= 2;
for (i = 0; i < baseIndex; i++) {
seg[baseIndex + i] = (i < num ? a[i] : 0);
}
for (i = baseIndex - 1; i >= 1; i--) {
seg[i] = seg[i * 2] + seg[i * 2 + 1];
}
}
ull plainAnswerSeg(int num) {
ull lookIndex = baseIndex;
ull result = 0;
while (num) {
if (num % 2 == 1) {
result += seg[lookIndex + num - 1];
}
lookIndex /= 2;
num /= 2;
}
return result;
}
ull gapAnswerSeg(int start, int end){
if (start > end) return gapAnswerSeg(end, start);
return plainAnswerSeg(end) - plainAnswerSeg(start - 1);
}
ull ulldiff(ull a, ull b){
if (a >= b) {
return a - b;
} else {
return b - a;
}
}
ull solve(){
int i, j, ki;
qsort(a, n, sizeof(ull), ullcomp);
i = n;
for (i = n - 1; i >= 0; i--) {
if (i + 1 < n && a[i + 1] != a[i]) {
printf("%llu\n", a[i]);
return 0;
}
}
return 0;
}
int main(void){
int i, j;
int x, y;
// scanf("%llu%llu", &h, &w);
scanf("%llu", &n);
for (i = 0; i < n; i++) {
scanf("%llu", &a[i]);
}
solve();
return 0;
}
Submission Info
Submission Time
2017-11-12 21:06:30+0900
Task
B - 心配性な富豪、ファミリーレストランに行く。
User
sheyasutaka
Language
C (GCC 5.4.1)
Score
100
Code Size
5089 Byte
Status
AC
Exec Time
1 ms
Memory
2176 KB
Compile Error
./Main.c: In function ‘main’:
./Main.c:284:2: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%llu", &n);
^
./Main.c:286:3: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%llu", &a[i]);
^
Judge Result
Set Name
All
Score / Max Score
100 / 100
Status
Set Name
Test Cases
All
random_1.txt, random_10.txt, random_2.txt, random_3.txt, random_4.txt, random_5.txt, random_6.txt, random_7.txt, random_8.txt, random_9.txt, sample_1.txt, sample_2.txt, sample_3.txt, small_1.txt, small_2.txt, small_3.txt, small_4.txt, small_5.txt
Case Name
Status
Exec Time
Memory
random_1.txt
AC
1 ms
2176 KB
random_10.txt
AC
1 ms
2176 KB
random_2.txt
AC
1 ms
2176 KB
random_3.txt
AC
1 ms
2176 KB
random_4.txt
AC
1 ms
2176 KB
random_5.txt
AC
1 ms
2176 KB
random_6.txt
AC
1 ms
2176 KB
random_7.txt
AC
1 ms
2176 KB
random_8.txt
AC
1 ms
2176 KB
random_9.txt
AC
1 ms
2176 KB
sample_1.txt
AC
1 ms
2176 KB
sample_2.txt
AC
1 ms
2176 KB
sample_3.txt
AC
1 ms
2176 KB
small_1.txt
AC
1 ms
2176 KB
small_2.txt
AC
1 ms
2176 KB
small_3.txt
AC
1 ms
2176 KB
small_4.txt
AC
1 ms
2176 KB
small_5.txt
AC
1 ms
2176 KB