京都大学プログラミングコンテスト2015

Submission #534988

Source codeソースコード

#include <cstdio>
#include <algorithm>
#include <stack>
#include <queue>
#include <deque>
#include <vector>
#include <string>
#include <string.h>
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <map>
#include <set>
#include <iostream>
#include <sstream>
#include <numeric>
#include <cctype>
#define fi first
#define se second
#define rep(i,n) for(int i = 0; i < n; ++i)
#define rrep(i,n) for(int i = 1; i <= n; ++i)
#define drep(i,n) for(int i = n-1; i >= 0; --i)
#define gep(i,g,j) for(int i = g.head[j]; i != -1; i = g.e[i].next)
#define each(it,c) for(__typeof((c).begin()) it=(c).begin();it!=(c).end();it++)
#define rng(a) a.begin(),a.end()
#define maxs(x,y) x = max(x,y)
#define mins(x,y) x = min(x,y)
#define pb push_back
#define sz(x) (int)(x).size()
#define pcnt __builtin_popcount
#define snuke srand((unsigned)clock()+(unsigned)time(NULL));
#define df(x) int x = in()
using namespace std;
typedef long long int ll;
typedef pair<int,int> P;
typedef vector<int> vi;
typedef vector<vi> vvi;
inline int in() { int x; scanf("%d",&x); return x;}
inline void priv(vi a) { rep(i,sz(a)) printf("%d%c",a[i],i==sz(a)-1?'\n':' ');}

const int MX = 100005, INF = 1000010000;
const ll LINF = 1000000000000000000ll;
const double eps = 1e-10;

// Binary Indexed Tree
struct bit{
  typedef int TT;
  vector<TT> d; int x2;
  bit(){}
  bit(int mx){ x2 = 1; while(x2 < mx) x2 <<= 1; d.resize(x2+1);}
  void add(int i, TT x=1){ for(++i;i<=x2;i+=i&-i) d[i] += x;}
  TT sum(int i){ ++i;
    TT x = 0; for(;i;i-=i&-i) x += d[i];
    return x;
  }
};
//

int main() {
  df(n);
  vi a, b;
  rep(i,n) b.pb(in());
  rep(i,n) a.pb(in());
  vvi d(n);
  rep(i,n) {
    int p = upper_bound(rng(a),b[i])-a.begin();
    if (p == 0) {
      cout<<-1<<endl;
      return 0;
    }
    d[p-1].pb(i);
  }
  priority_queue<int> q;
  drep(i,n) {
    for (int x : d[i]) q.push(x);
    if (sz(q) == 0) {
      cout<<-1<<endl;
      return 0;
    }
    b[i] = q.top(); q.pop();
  }
  bit t(n+2);
  ll ans = 0;
  rep(i,n) {
    ans += i-t.sum(b[i]);
    t.add(b[i]);
  }
  cout<<ans<<endl;
  return 0;
}




Submission

Task問題 G - ケンドー
User nameユーザ名 ຣസںƙᘓ
Created time投稿日時
Language言語 C++11 (GCC 4.9.2)
Status状態 AC
Score得点 300
Source lengthソースコード長 2181 Byte
File nameファイル名
Exec time実行時間 188 ms
Memory usageメモリ使用量 7944 KB

Compiler messageコンパイルメッセージ

./Main.cpp: In function ‘int in()’:
./Main.cpp:38:40: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
inline int in() { int x; scanf("%d",&x); return x;}
^

Test case

Set

Set name Score得点 / Max score Cases
Small 3 / 3 00_small_sample_00.txt,00_small_sample_01.txt,00_small_sample_02.txt,10_small_01.txt,10_small_02.txt,10_small_03.txt,10_small_04.txt,10_small_05.txt,10_small_06.txt,10_small_07.txt,10_small_08.txt,10_small_09.txt,10_small_10.txt
All 297 / 297 00_small_sample_00.txt,00_small_sample_01.txt,00_small_sample_02.txt,10_small_01.txt,10_small_02.txt,10_small_03.txt,10_small_04.txt,10_small_05.txt,10_small_06.txt,10_small_07.txt,10_small_08.txt,10_small_09.txt,10_small_10.txt,20_large_01.txt,20_large_02.txt,20_large_03.txt,20_large_04.txt,20_large_05.txt,20_large_06.txt,20_large_07.txt,20_large_08.txt,20_large_09.txt,20_large_10.txt,30_maxcase_01.txt,31_almost_maxcase_01.txt,31_almost_maxcase_02.txt,31_almost_maxcase_03.txt,31_almost_maxcase_04.txt,31_almost_maxcase_05.txt,40_bad_maxcase_01.txt,40_bad_maxcase_02.txt,40_bad_maxcase_03.txt,40_bad_maxcase_04.txt,40_bad_maxcase_05.txt,41_bad_shufflecase_01.txt,41_bad_shufflecase_02.txt,41_bad_shufflecase_03.txt,41_bad_shufflecase_04.txt

Test case

Case name Status状態 Exec time実行時間 Memory usageメモリ使用量
00_small_sample_00.txt AC 188 ms 1164 KB
00_small_sample_01.txt AC 33 ms 1164 KB
00_small_sample_02.txt AC 32 ms 1260 KB
10_small_01.txt AC 33 ms 1164 KB
10_small_02.txt AC 33 ms 1164 KB
10_small_03.txt AC 34 ms 1176 KB
10_small_04.txt AC 33 ms 1168 KB
10_small_05.txt AC 34 ms 1168 KB
10_small_06.txt AC 34 ms 1168 KB
10_small_07.txt AC 34 ms 1168 KB
10_small_08.txt AC 32 ms 1168 KB
10_small_09.txt AC 32 ms 1200 KB
10_small_10.txt AC 32 ms 1200 KB
20_large_01.txt AC 110 ms 5648 KB
20_large_02.txt AC 107 ms 5632 KB
20_large_03.txt AC 113 ms 5800 KB
20_large_04.txt AC 113 ms 5828 KB
20_large_05.txt AC 112 ms 5764 KB
20_large_06.txt AC 109 ms 5764 KB
20_large_07.txt AC 107 ms 5512 KB
20_large_08.txt AC 112 ms 5800 KB
20_large_09.txt AC 116 ms 5800 KB
20_large_10.txt AC 110 ms 5640 KB
30_maxcase_01.txt AC 104 ms 7908 KB
31_almost_maxcase_01.txt AC 119 ms 7936 KB
31_almost_maxcase_02.txt AC 107 ms 7692 KB
31_almost_maxcase_03.txt AC 112 ms 7816 KB
31_almost_maxcase_04.txt AC 110 ms 7944 KB
31_almost_maxcase_05.txt AC 111 ms 7840 KB
40_bad_maxcase_01.txt AC 105 ms 7168 KB
40_bad_maxcase_02.txt AC 105 ms 7176 KB
40_bad_maxcase_03.txt AC 107 ms 7428 KB
40_bad_maxcase_04.txt AC 104 ms 7160 KB
40_bad_maxcase_05.txt AC 105 ms 7172 KB
41_bad_shufflecase_01.txt AC 124 ms 7428 KB
41_bad_shufflecase_02.txt AC 119 ms 7172 KB
41_bad_shufflecase_03.txt AC 121 ms 7300 KB
41_bad_shufflecase_04.txt AC 116 ms 7180 KB