Submission #39011803


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

#define NDEBUG
#include <cassert>


typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> ii;
typedef pair<ll,ll> llll;
typedef pair<double,double> dd;

typedef vector<int> vi;
typedef vector<vector<int>> vvi;
typedef vector<ii> vii;
typedef vector<vector<ii>> vvii;
typedef vector<ll> vll;
typedef vector<vector<ll>> vvll;
typedef vector<bool> vb;
typedef vector<string> vs;
typedef vector<double> vd;

#define pb  push_back
#define eb  emplace_back
#define rep(var,n)  for(int var=0;var<(n);++var)
#define rep1(var,n)  for(int var=1;var<=(n);++var)
#define repC2(vari,varj,n)  for(int vari=0;vari<(n)-1;++vari)for(int varj=vari+1;varj<(n);++varj)
#define repC3(vari,varj,vark,n)  for(int vari=0;vari<(n)-2;++vari)for(int varj=vari+1;varj<(n)-1;++varj)for(int vark=varj+1;vark<(n);++vark)
#define ALL(c)  (c).begin(),(c).end()
#define RALL(c)  (c).rbegin(),(c).rend()
#define whole(f, x, ...)                                     \
    ([&](decltype((x)) whole) {                              \
        return (f)(begin(whole), end(whole), ##__VA_ARGS__); \
    })(x)
#define tr(i,c)  for(auto i=(c).begin(); i!=(c).end(); ++i)
#define found(s,e)  ((s).find(e)!=(s).end())
#define mset(arr,val)  memset(arr,val,sizeof(arr))
#define mid(x,y) ((x)+((y)-(x))/2)
#define IN(x,a,b) ((a)<=(x)&&(x)<=(b))
#define IN_(x,a,b) ((a)<=(x)&&(x)<(b))
#define tors(a) sort(ALL(a), greater<decltype(a[0])>())
#define nC2(n) ((ll)(n)*((n)-1)/2)

#define clamp(v,lo,hi) min(max(v,lo),hi)
#define ABS(x) max((x),-(x))
#define PQ(T) priority_queue<T,vector<T>,greater<T>>
#define CLEAR(a) remove_reference_t<decltype(a)>().swap(a)
template <typename T>
vector<T> vec(size_t len, T elem) { return vector<T>(len, elem); }

template<typename T1, typename T2> inline void amin(T1 & a, T2 const & b) { if (a>b) a=b; }
template<typename T1, typename T2> inline void amax(T1 & a, T2 const & b) { if (a<b) a=b; }

template <typename T>
void erase_one(multiset<T>& ms, T val) {
    auto iter = ms.find(val);
    if (iter != ms.end()) ms.erase(iter);
}

inline ll square(ll x) { return x * x; }
inline ll gcd(ll a, ll b) { while(a) swap(a, b%=a); return b; }
inline ll lcm(ll a, ll b) { return a/gcd(a,b)*b; }
template <typename T>
inline T mod(T a, T b) { return ((a % b) + b) % b; }

inline string _sbin(long long x, int width = -1) {
    vector<char> w;
    for (int i = 0; i < 64; ++i) {
        if (!x) break;
        w.push_back('0' + x % 2);
        x /= 2;
    }
    if (width > 0) {
        while (w.size() < width) w.push_back('0');
    }
    return string(w.rbegin(), w.rend());
}
#define sbin(x) _sbin(x).c_str()
#define sbinn(x, n) _sbin(x, n).c_str()

const long double pi = 3.141592653589793238462643383279502884197;

template <typename T>
int find_left(vector<T>& v, T elem) {
    return (int)(upper_bound(v.begin(), v.end(), elem) - v.begin()) - 1;
}
template <typename T>
int find_right(vector<T>& v, T elem) {
    return (int)(lower_bound(v.begin(), v.end(), elem) - v.begin());
}

template <typename T>
int lower_bound_ix(vector<T>& v, T val) { return lower_bound(v.begin(), v.end(), val) - v.begin(); }
template <typename T>
int upper_bound_ix(vector<T>& v, T val) { return upper_bound(v.begin(), v.end(), val) - v.begin(); }

template <typename T>
size_t uniq(vector<T>& a, bool do_sort=true) {
    if (do_sort) sort(a.begin(), a.end());
    a.erase(unique(a.begin(), a.end()), a.end());
    return a.size();
}

template <typename T1, typename T2>
vector<T2> accum(vector<T1>& a, T2 init) {
    int L = a.size();
    vector<T2> acc(L + 1);
    acc[0] = init;
    for (int i=0; i<L; ++i) acc[i+1] = acc[i] + a[i];
    return move(acc);
}

#define accum0(a) for(int i=1;i<a.size();++i)a[i]+=a[i-1]

template <typename T>
T accumed(vector<T>& acc, int from, int to) {
    int M = acc.size() - 1;
    return acc[min(M, to)] - acc[max(0, from)];
}

ll MOD=1000000007LL;

inline ll ADD(ll x, ll y) { return (x+y) % MOD; }
inline ll SUB(ll x, ll y) { return (x-y+MOD) % MOD; }
inline ll MUL(ll x, ll y) { return (x%MOD)*(y%MOD) % MOD; }
inline ll POW(ll x, ll e) { ll v=1; for(; e; x=MUL(x,x), e>>=1) if (e&1) v = MUL(v,x); return v; }
inline ll INV(ll y) { /*assert(y%MOD!=0);*/ return POW(y, MOD-2); }
inline ll DIV(ll x, ll y) { return MUL(x, INV(y)); }

vector<ll> fact { 1, 1 }, ifact { 1, 1 };
int fact_prepared = 1;

void prepare_fact(int mx){
    if (mx <= fact_prepared) return;

    fact.resize(mx+1);
    ifact.resize(mx+1);
    for (int n=fact_prepared+1; n<=mx; ++n) fact[n] = MUL(fact[n-1], n);
    ifact[mx] = INV(fact[mx]);
    for (int n=mx; n>fact_prepared+1; --n) ifact[n-1] = MUL(ifact[n], n);

    for (int n=fact_prepared+1; n<=mx; ++n) { assert(MUL(fact[n], ifact[n]) == 1LL); }
    fact_prepared = mx;
}

inline ll nCk(int n, int k) {
    if (!IN(k, 0, n)) return 0;
    prepare_fact(n);
    return fact[n] * ifact[k] % MOD * ifact[n - k] % MOD;
}
inline ll nPk(int n, int k) {
    if (!IN(k, 0, n)) return 0;
    prepare_fact(n);
    return fact[n] * ifact[n-k] % MOD;
}
inline ll nDk(int n, int k) {
    return nCk(n+k, k);
}
inline ll nHk(int n, int k) {
    return nCk(n+k-1, k);
}


#define is_digit(c) ('0'<=(c)&&(c)<='9')
#define is_whitespace(c) ((c)==' '||(c)=='\n'||(c)=='\r'||(c)=='\t'||(c)==EOF)
void reader(int& x){
  x=0;
  bool neg=false; for(;;){ int k=getchar(); if(k=='-'){ neg=true; break; } if (is_digit(k)){ x=k-'0'; break;} }
  for(;;){ int k=getchar(); if (!is_digit(k)) break; x=x*10+k-'0'; }
  if(neg) x=-x; }
void reader(long long& x){
  x=0;
  bool neg=false; for(;;){ int k=getchar(); if(k=='-'){ neg=true; break; } if (is_digit(k)){ x=k-'0'; break; } }
  for(;;){ int k=getchar(); if (!is_digit(k)) break; x=x*10+k-'0'; }
  if(neg) x=-x; }
void reader(unsigned long long& x){
  x=0;
  for(;;){ int k=getchar(); if (is_digit(k)){ x=(unsigned long long)(k-'0'); break; } }
  for(;;){ int k=getchar(); if (!is_digit(k)) break; x=x*10+k-'0'; } }
int reader(char s[]){
  int c,i=0;
  for(;;){ c=getchar(); if (!is_whitespace(c)) break; } s[i++]=c;
  for(;;){ c=getchar(); if (is_whitespace(c)) break; s[i++]=c; }
  s[i]='\0'; return i; }
int reader(string& s){
  int c;
  for(;;){ c=getchar(); if (!is_whitespace(c)) break; } s.push_back(c);
  for(;;){ c=getchar(); if (is_whitespace(c)) break; s.push_back(c); }
  return s.size(); }
void reader(char& c){
  for(;;){ c=getchar(); if (!is_whitespace(c)) break; } }

void writer(int x, char c=0){
  int s=0; bool neg=false; char f[10]; if(x<0) neg=true,x=-x; if(x==0) f[s++]='0'; else while(x) f[s++]='0'+x%10,x/=10;
  if(neg) putchar('-'); while(s--) putchar(f[s]); if(c) putchar(c); }
void writer(long long x, char c=0){
  int s=0; bool neg=false; char f[20]; if(x<0) neg=true,x=-x; if(x==0) f[s++]='0'; else while(x) f[s++]='0'+x%10,x/=10;
  if(neg) putchar('-'); while(s--) putchar(f[s]); if(c) putchar(c); }
void writer(unsigned long long x, char c=0){
  int s=0; char f[20]; if(x==0) f[s++]='0'; else while(x) f[s++]='0'+x%10,x/=10;
  while(s--) putchar(f[s]); if(c) putchar(c); }
void writer(const string& x, char c=0){
  for(int i=0;i<x.size();++i) putchar(x[i]); if(c) putchar(c); }
void writer(const char x[], char c=0){
  for(int i=0;x[i]!='\0';++i) putchar(x[i]); if(c) putchar(c); }

template <class T,class S> void reader(T& x, S& y){ reader(x); reader(y); }
template <class T,class S,class U> void reader(T& x, S& y, U& z){ reader(x); reader(y); reader(z); }
template <class T,class S,class U,class V> void reader(T& x, S& y, U& z, V& w){ reader(x); reader(y); reader(z); reader(w); }
template <class T> vector<T> readerArray(int n){
  vector<T> ret(n); for(int i=0;i<n;++i) reader(ret[i]); return ret; }
template <class T> vector<vector<T>> readerMatrix(int n,int m=0){
  if (m==0) m = n; vector<vector<T>> ret(n); for(int i=0;i<n;++i) ret[i] = readerArray<T>(m); return ret; }

template <class T> void writerLn(T x){ writer(x,'\n'); }
template <class T,class S> void writerLn(T x, S y){ writer(x,' '); writer(y,'\n'); }
template <class T,class S,class U> void writerLn(T x, S y, U z){ writer(x,' '); writer(y,' '); writer(z,'\n'); }
template <class T,class S,class U,class V> void writerLn(T x, S y, U z, V v){ writer(x,' '); writer(y,' '); writer(z,' '); writer(v,'\n'); }
template <class T> void writerArrayLn(T x[], int n){
  if(n==0){ putchar('\n'); return; }
  for(int i=0;i<n-1;++i) writer(x[i],' '); writer(x[n-1],'\n'); }
template <class T> void writerArrayLn(vector<T>& x){ writerArrayLn(x.data(),(int)x.size()); }
template <class T> void writerArrayLnV(T x[], int n){ for(int i=0;i<n;++i) writerLn(x[i]); }
template <class T> void writerArrayLnV(vector<T>& x){ for(T xi: x) writerLn(xi); }
template <class T> void writerMatrix(vector<vector<T>>& x){
  int n = x.size(); if (n == 0) return;
  int m = x[0].size(); for (int i=0; i<n; ++i) writerArrayLn(x[i]); }

void readerEdges(size_t M,vector<int>& a,vector<int>& b,bool decrement=true){
  a.resize(M); b.resize(M);
  for(int i=0;i<M;++i){ reader(a[i]); reader(b[i]); if(decrement){ --a[i]; --b[i]; } } }
template <class W> void readerEdges(size_t M,vector<int>& a,vector<int>& b,vector<W>& c,bool decrement=true){
  a.resize(M); b.resize(M); c.resize(M);
  for(int i=0;i<M;++i){ reader(a[i]); reader(b[i]); reader(c[i]); if(decrement){ --a[i]; --b[i]; } } }
template <class S,class T> void readerEdges(size_t M,vector<int>& a,vector<int>& b,vector<S>& c,vector<T>& d,bool decrement=true){
  a.resize(M); b.resize(M); c.resize(M); d.resize(M);
  for(int i=0;i<M;++i){ reader(a[i]); reader(b[i]); reader(c[i]); reader(d[i]); if(decrement){ --a[i]; --b[i]; } } }

vector<vector<int>> make_nxt(int N, int M, vector<int>& a, vector<int>& b){
  vector<vector<int>> nxt(N);
  for(int i=0;i<M;++i){ nxt[a[i]].push_back(b[i]); nxt[b[i]].push_back(a[i]); }
  return nxt; }
template <class T> vector<vector<pair<int,T>>> make_nxt(int N, int M, vector<int>& a, vector<int>& b, vector<T>& c){
  vector<vector<pair<int,T>>> nxt(N);
  for(int i=0;i<M;++i){ nxt[a[i]].emplace_back(b[i],c[i]); nxt[b[i]].emplace_back(a[i],c[i]); }
  return nxt; }

ll solve(int N, vi& a) {
    return -1LL;
}

int main() {
    int N, M; reader(N, M);
    vi a = readerArray<int>(N);
    vi b = readerArray<int>(M);
    int sc =0;
    rep(i,M){
        sc += a[ b[i]-1 ];
    }
    cout << sc << endl;



    return 0;
}

Submission Info

Submission Time
Task A - Contest Result
User naoya_t
Language C++ (GCC 9.2.1)
Score 100
Code Size 10581 Byte
Status AC
Exec Time 7 ms
Memory 3556 KiB

Compile Error

./Main.cpp: In function ‘std::string _sbin(long long int, int)’:
./Main.cpp:75:25: warning: comparison of integer expressions of different signedness: ‘std::vector<char>::size_type’ {aka ‘long unsigned int’} and ‘int’ [-Wsign-compare]
   75 |         while (w.size() < width) w.push_back('0');
      |                ~~~~~~~~~^~~~~~~
./Main.cpp: In function ‘void writer(int, char)’:
./Main.cpp:196:3: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
  196 |   if(neg) putchar('-'); while(s--) putchar(f[s]); if(c) putchar(c); }
      |   ^~
./Main.cpp:196:25: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
  196 |   if(neg) putchar('-'); while(s--) putchar(f[s]); if(c) putchar(c); }
      |                         ^~~~~
./Main.cpp: In function ‘void writer(long long int, char)’:
./Main.cpp:199:3: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
  199 |   if(neg) putchar('-'); while(s--) putchar(f[s]); if(c) putchar(c); }
      |   ^~
./Main.cpp:199:25: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
  199 |   if(neg) putchar('-'); while(s--) putchar(f[s]); if(c) putchar(c); }
      |                         ^~~~~
./Main.cpp: In function ‘void writer(long long unsigned int, char)’:
./Main.cpp:202:3: warning: this ‘while’ clause does not guard... [-Wmisleading-indentation]
  202 |   while(s--) putchar(f[s]); if(c) putchar(c); }
      |   ^~~~~
./Main.cpp:202:29: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘while’
  202 |   while(s--) putchar(f[s]); if(c) putchar(c); }
      |                             ^~
./Main.cpp: In function ‘void writer(const string&, char)’:
./Main.cpp:204:16: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::__cxx11::basic_string<char>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
  204 |   for...

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 3
AC × 15
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 02_max_00.txt, 03_min_00.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 7 ms 3408 KiB
00_sample_01.txt AC 2 ms 3416 KiB
00_sample_02.txt AC 2 ms 3536 KiB
01_random_00.txt AC 2 ms 3400 KiB
01_random_01.txt AC 2 ms 3556 KiB
01_random_02.txt AC 2 ms 3480 KiB
01_random_03.txt AC 2 ms 3400 KiB
01_random_04.txt AC 2 ms 3404 KiB
01_random_05.txt AC 2 ms 3536 KiB
01_random_06.txt AC 2 ms 3532 KiB
01_random_07.txt AC 2 ms 3416 KiB
01_random_08.txt AC 2 ms 3484 KiB
01_random_09.txt AC 2 ms 3476 KiB
02_max_00.txt AC 2 ms 3416 KiB
03_min_00.txt AC 2 ms 3504 KiB